\contentsline {section}{\numberline {1}Foreword}{3}
\contentsline {section}{\numberline {2}Architecture}{4}
\contentsline {subsection}{\numberline {2.1}Model-View-Controller}{4}
\contentsline {subsection}{\numberline {2.2}Assigning Responsibilities}{5}
\contentsline {subsubsection}{\numberline {2.2.1}Delegation of Responsibilities in Our Program}{5}
\contentsline {subsubsection}{\numberline {2.2.2}Relationship Between Searching and the Data Structures}{6}
\contentsline {subsubsection}{\numberline {2.2.3}Different Implementations of Related Methods?}{6}
\contentsline {subsubsection}{\numberline {2.2.4}Benefits of Our Design}{7}
\contentsline {subsection}{\numberline {2.3}Other Issues Regarding Our Implementation}{7}
\contentsline {subsubsection}{\numberline {2.3.1}Inheriting from Object}{7}
\contentsline {section}{\numberline {3}Searchers}{8}
\contentsline {subsection}{\numberline {3.1}Linked List Searcher}{8}
\contentsline {subsection}{\numberline {3.2}Nested Linked List Searcher}{9}
\contentsline {subsection}{\numberline {3.3}Hash Table Searchers}{12}
\contentsline {subsubsection}{\numberline {3.3.1}Hash Table Data Structure}{12}
\contentsline {subsubsection}{\numberline {3.3.2}Our Implementation}{13}
\contentsline {subsubsection}{\numberline {3.3.3}Load Factor and Dynamic Hash Table}{14}
\contentsline {subsubsection}{\numberline {3.3.4}A Design Problem}{14}
\contentsline {subsubsection}{\numberline {3.3.5}Time Complexity}{14}
\contentsline {section}{\numberline {4}Searching With Boolean Operators}{14}
\contentsline {subsection}{\numberline {4.1}How It Works}{15}
\contentsline {subsection}{\numberline {4.2}Limitations}{15}
\contentsline {subsection}{\numberline {4.3}Syntax Tree Data Structure}{16}
\contentsline {subsection}{\numberline {4.4}More on Implementation and Time Complexity}{16}
\contentsline {subsubsection}{\numberline {4.4.1}Growing the tree}{16}
\contentsline {subsubsection}{\numberline {4.4.2}Time Complexity}{17}
\contentsline {subsubsection}{\numberline {4.4.3}Possible Changes}{17}
\contentsline {section}{\numberline {5}Benchmark}{17}
\contentsline {subsection}{\numberline {5.1}Introduction}{17}
\contentsline {subsubsection}{\numberline {5.1.1}Experimental Design}{18}
\contentsline {subsection}{\numberline {5.2}Data Load Benchmarks}{18}
\contentsline {subsubsection}{\numberline {5.2.1}Linked List}{19}
\contentsline {subsubsection}{\numberline {5.2.2}Nested Linked List}{19}
\contentsline {subsubsection}{\numberline {5.2.3}Static Hash Table}{19}
\contentsline {subsubsection}{\numberline {5.2.4}Dynamic Hash Table}{20}
\contentsline {subsubsection}{\numberline {5.2.5}Conclusion}{20}
\contentsline {subsection}{\numberline {5.3}Search Execution Benchmarks}{20}
\contentsline {subsubsection}{\numberline {5.3.1}Linked List}{20}
\contentsline {subsubsection}{\numberline {5.3.2}Nested Linked List}{20}
\contentsline {subsubsection}{\numberline {5.3.3}Static Hash Table}{21}
\contentsline {subsubsection}{\numberline {5.3.4}Dynamic Hash Table}{21}
\contentsline {subsubsection}{\numberline {5.3.5}Conclusion}{22}
\contentsline {subsection}{\numberline {5.4}Validity and Generalisability}{22}
\contentsline {section}{\numberline {6}Testing}{24}
\contentsline {subsection}{\numberline {6.1}White-Box Testing}{24}
\contentsline {subsection}{\numberline {6.2}Black-Box Testing}{24}
\contentsline {subsubsection}{\numberline {6.2.1}Constructing Data Files for Testing}{28}
\contentsline {subsubsection}{\numberline {6.2.2}Creating a Test Data-File}{28}
\contentsline {subsubsection}{\numberline {6.2.3}Test Queries and Expected Outcomes}{29}
\contentsline {subsection}{\numberline {6.3}Some Final Words on Our Tests}{29}
\contentsline {section}{\numberline {7}Conclusion}{30}
\vspace {5mm}\hrule 
\contentsline {section}{\hbox to\@tempdima {A\hfil }UML Diagram: Data Structures and Searchers}{31}
\contentsline {section}{\hbox to\@tempdima {B\hfil }UML Diagram: Views}{32}
\contentsline {section}{\hbox to\@tempdima {C\hfil }Black-box Testing of Load}{33}
\contentsline {section}{\hbox to\@tempdima {D\hfil }Black-box Test without Boolean Search}{33}
\contentsline {section}{\hbox to\@tempdima {E\hfil }Black-box Test with Boolean Search}{34}
\contentsline {section}{\hbox to\@tempdima {F\hfil }Sequence Diagram: Initialization}{37}
\contentsline {section}{\hbox to\@tempdima {G\hfil }Sequence Diagram: Searching}{38}
